package day26.yichang;

/**
 * 测试所有异常处理示例的主类
 * 该类用于演示和测试各种异常处理机制的使用方法
 */
public class TestAllExceptions {
    /**
     * 程序入口点
     * 依次执行各种异常处理的演示示例
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 打印程序开始信息
        System.out.println("开始测试所有异常处理示例\n");
        
        // 测试基本异常处理
        // 调用BasicExceptionDemo类的main方法来演示基本的try-catch-finally使用
        System.out.println("1. 测试基本异常处理:");
        BasicExceptionDemo.main(args);
        
        // 打印分隔线，使用等号分隔不同的测试部分
        System.out.println("\n" + generateRepeatedString("=", 50) + "\n");
        
        // 测试自定义异常
        // 调用CustomExceptionDemo类的main方法来演示如何创建和使用自定义异常
        System.out.println("2. 测试自定义异常:");
        CustomExceptionDemo.main(args);
        
        // 打印分隔线，使用等号分隔不同的测试部分
        System.out.println("\n" + generateRepeatedString("=", 50) + "\n");
        
        // 测试throws和throw关键字的使用
        // 调用ThrowsThrowDemo类的main方法来演示throws和throw的使用方式
        System.out.println("3. 测试throws和throw:");
        ThrowsThrowDemo.main(args);
        
        // 打印分隔线，使用等号分隔不同的测试部分
        System.out.println("\n" + generateRepeatedString("=", 50) + "\n");
        
        // 测试综合异常处理示例
        // 调用ComprehensiveExceptionDemo类的main方法来演示复杂的异常处理场景
        System.out.println("4. 测试综合异常处理:");
        ComprehensiveExceptionDemo.main(args);
        
        // 打印所有测试完成的信息
        System.out.println("\n所有测试完成!");
    }
    
    /**
     * 生成重复字符串的辅助方法
     * 用于替代String.repeat()方法，在较老版本的Java中使用
     * @param str 需要重复的字符串
     * @param times 重复的次数
     * @return 重复指定次数后的字符串
     */
    private static String generateRepeatedString(String str, int times) {
        // 使用StringBuilder提高字符串拼接效率
        StringBuilder sb = new StringBuilder();
        // 循环指定次数，将字符串添加到StringBuilder中
        for (int i = 0; i < times; i++) {
            sb.append(str);
        }
        // 返回最终生成的重复字符串
        return sb.toString();
    }
}